package cn.kgc.javaweb.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author: mosin
 * @version: v1.0  2022/10/24
 * 自定义一个类  处理前端请求  自定义的普通类并不具有处理前端请求的能力
 *  如果希望自定义的类拥有处理前端请求的能力 需要继承HttpServlet  封装了http协议
 *   前端浏览器   --http协议-->   服务器
 *   前端发送一个请求
 *   声明   HelloServlet  能处理什么请求
 *
 *  总结：   如何完成一个自定义servlet的开发  步骤
 *      1.  导包   javax.servlet-api
 *      2.  创建自定义类 继承  HttpServlet
 *      3. 重写 service (HttpServletRequest req, HttpServletResponse resp)
 *      4. 配置web.xml文件   servlet       servlet-mapping
 */
public class HelloServlet extends HttpServlet {

    //  自动调用    当请求地址被匹配时
    /**
     *  浏览器 -> 请求 ->  tomcat
     * @param req     请求对象
     * @param resp    响应对象
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


        System.out.println("hello tomcat");

        //通过请求对象 获取请求参数  HttpServletRequest req      form   a
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("password = " + password);
        System.out.println("username = " + username);

        //通过HttpServletRequest req   还有哪些信息可以获取？

        //  获取请求方式   get  post  delete  put
        String method = req.getMethod();
        System.out.println("method = " + method);

        // 请求地址的获取
        String servletPath = req.getServletPath();
        System.out.println("servletPath = " + servletPath);

        //项目的虚拟名称
        String contextPath = req.getContextPath();
        System.out.println("contextPath = " + contextPath);

        // 请求地址的全称   URL  统一资源定位符 http://localhost:8080/javaweb/hello
        StringBuffer requestURL = req.getRequestURL();
        System.out.println("requestURL = " + requestURL);

        //资源地址   /javaweb/hello
        String requestURI = req.getRequestURI();
        System.out.println("requestURI = " + requestURI);

        // 协议  HTTP/1.1
        String protocol = req.getProtocol();
        System.out.println("protocol = " + protocol);


        //  设置响应格式   html   json
        resp.setContentType("text/html;charset=utf-8");
        //  响应数据给前端浏览器  HttpServletResponse resp  通过响应对象  获取输出流 通过流将数据响应给前端浏览器
        PrintWriter writer = resp.getWriter();
        writer.write("<h1>hello tomcat</h1>");    //table  展示用户信息  id username  password  address   5条数据
        writer.close();


    }
}
